package com.rc.saas.mini.hlhtcec2.config;

/**
 * 互联互通时平台跟CEC各标准状态的转换工具
 */
public class ConvertStatusUtil {
    //充电停止情况
    //public final static String STOP_FAULT = "故障停止";
    //public final static String STOP_HAND = "手动停止";
    //public final static String STOP_FULL = "充满停止";
    //public final static String STOP_NOT_BALANCE = "余额不足停止";
    //public final static String STOP_URGENT = "紧急停止";
    //public final static String STOP_PRICE = "电价异常";

    /**
     * startChargeSeqStat订单状态转换
     * @param chargeOrderStatus
     * @return
     */
    public static int convertFinishedOrderStatus(Integer chargeOrderStatus) {
        //订单状态status(0:未充电,1:充电中,2:已结束充电 3:充电结算中) 默认0
        //充电订单状态
        //1：启动中
        //2：充电中
        //3：停止中
        //4：已结束
        //5：未知
        //八桂充增加了以下2种：
        //-500: 故障
        //0: 未激活

        switch (chargeOrderStatus) {
            case 0:
                return chargeOrderStatus;
            case 1:
                return 2;
            case 2:
                return 4;
            case 3:
                return 4;
            default:
                return 5;
        }
    }

    /**
     * startChargeSeqStat开始充电状态转换
     * @param chargeOrderStatus
     * @param notifyStartChargeReq
     * @return
     */
/*    public static NotifyStartChargeReq convertStartChargeSeqStat(Integer chargeOrderStatus, NotifyStartChargeReq notifyStartChargeReq) {
        //将以下状态:
        //String status; 订单状态(0:未充电,1:充电中,2:已结束充电 3:充电结算中) 默认0

        //修改为：
        //CEC标准
        //1: 启动中；
        //2: 充电中；
        //3: 停止中；
        //4: 已结束；
        //5: 未知

        //StartChargeSeqStat回复2（充电中），如果失败也可回复4（已结束）。需在query_start_charge触发60s内请求此接口
        if (chargeOrderStatus.intValue() == 1) { //充电中
            notifyStartChargeReq.setStartChargeSeqStat(2);
        } else if (chargeOrderStatus.intValue() == 2) { //已结束
            notifyStartChargeReq.setStartChargeSeqStat(4);
        } else {
            notifyStartChargeReq.setStartChargeSeqStat(5);
        }

        return notifyStartChargeReq;
    }*/

    /**
     * startChargeSeqStat结束充电状态转换
     * @param chargeOrderStatus
     * @param notifyStopChargeReq
     * @return
     */
/*
    public static NotifyStopChargeReq convertStopChargeSeqStat(Integer chargeOrderStatus, NotifyStopChargeReq notifyStopChargeReq) {
        //将以下状态：
        //String status;//订单状态(0:未充电,1:充电中,2:完成)
        //修改为：
        //CEC标准
        //1: 启动中；
        //2: 充电中；
        //3: 停止中；
        //4: 已结束；
        //5: 未知

        //其实我们就两种状态 充电中与已结算
        if (chargeOrderStatus.intValue() == 2) { //已结束
            //return 4;

            notifyStopChargeReq.setStartChargeSeqStat(4);
            notifyStopChargeReq.setSuccStat(0);
            notifyStopChargeReq.setFailReason(0);
        } else { //停止中
            //return 3;

            notifyStopChargeReq.setStartChargeSeqStat(3);
            notifyStopChargeReq.setSuccStat(0);
            notifyStopChargeReq.setFailReason(0);
        }

        return notifyStopChargeReq;
    }
*/

    /**
     * 根据枪状态转换为CEC标准订单状态
     * @param gunStatus
     * @return
     */
    public static int convertEquipChargeStatus(String gunStatus) {
        //将以下状态:
        //String status;//订单状态(0:未充电,1:充电中,2:完成)

        //CEC StartChargeSeq Stat:
        //1: 启动中；
        //2: 充电中；
        //3: 停止中；
        //4: 已结束；
        //5: 未知

        //String status;//订单状态(0:未充电,1:充电中,2:完成)
        if (gunStatus.equals("0")) { //未充电
            return 1;
        } else if (gunStatus.equals("1")) { //充电中
            return 2;
        } else if (gunStatus.equals("2")) { //完成
            return 4;
        } else {
            return 5;
        }
    }


    /**
     * 充电期间,充电设备接口状态转换
     * @param status
     * @return
     */
    public static int convertEquipChargeConnectorStatus(String status) {
        //将以下状态:
        //value = -1;// 充电中
        //value = 1;// 插枪中
        //value = 0;// 空闲中

        //CEC ConnectorStatus:
        //1: 空闲；
        //2: 占用（未充电）；
        //3: 占用（充电中）；
        //4: 占用（预约锁定）；
        //255: 故障

        //订单只有两种状态:充电中与已结算
        if (status.equals("-1")) { //充电中
            return 3;
        } else if (status.equals("1")) { //插枪中
            return 2;
        } else if (status.equals("0")) { //空闲中
            return 1;
        } else {
            return 255;
        }
    }

    /**
     * CEC充电结束原因转换
     * @param orderStopReason
     * @return
     */
    public static int convertStopReason(Integer orderStopReason) {
        //将以下状态:
        //order_info.stop_reason:充电结束原因, 0: 用户手动停止充电；1: 客户归属地运营商平台停止充电；2: BMS 停止充电；3: 充电机设备故障； 4: 连接器断开；5~99, 自定义

        /**
         * 停止方式
         * 0: 用户手动停止充电；
         * 1: 客户归属地运营商平台停止充电；
         * 2: BMS 停止充电；
         * 3: 充电机网络异常；
         * 4: 连接器断开
         * 5: 电价异常
         * 6: 余额不足
         * 7: 电流过低停止
         * 8: 充满平台停止
         * 9: 充满停止
         * 10: 电池温度过高停止
         * 11: 电流过高
         * 12: 电压过高
         * 13: 订单已结算
         * 14: 刷卡停止
         */

        //CEC StopReason:
        //0: 用户手动停止充电；
        //1: 客户归属地运营商平台停止充电；
        //2: BMS 停止充电；
        //3: 充电机设备故障；
        //4: 连接器断开；
        //5~99, 自定义

        //SAAS平台的order_info.stop_reason已跟中电通的标准一致，无需转换
        return orderStopReason;
    }
}

